JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去… 及其浮点数计算精度问题(推荐的类库 Numeral.js 和 accounting.js)... 您所在的位置:网站首页 js 数字格式化 JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去… 及其浮点数计算精度问题(推荐的类库 Numeral.js 和 accounting.js)...

JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去… 及其浮点数计算精度问题(推荐的类库 Numeral.js 和 accounting.js)...

2023-07-31 19:35| 来源: 网络整理| 查看: 265

前端开发中经常会碰到用 JavaScript 格式化数字,最最常见的是格式化金额,一般格式化金额需要千分位分隔,保留2位小数等等。

还有偶然会遇到的使用 js 计算浮点数时出现误差。

完善的功能函数推荐文章(标题内容):http://www.css88.com/archives/7324#more-7324

 

JavaScript 浮点数计算精度问题简单解决

摘要: 由于计算机是用二进制来存储和处理数字,不能精确表示浮点数,而JavaScript中没有相应的封装类来处理浮点数运算,直接计算会导致运算精度丢失。

JavaScript 中的所有数据都是以 64 位浮点型数据(float) 来存储。所有的编程语言,包括 JavaScript,对浮点型数据的精确度都很难确定。

console.log( 0.1 + 0.2 ); //0.30000000000000004

方法一:使用 toFixed 进行四舍五入指定要保留的小数位数

console.log(( 0.1 + 0.2 ).toFixed(1)); // 0.3

缺点:其实不精确,特别对于计算金额类的严谨问题不推荐使用,且不同浏览器对其计算结果存在差异。

 

方法二:把需要计算的数字升级(乘以10的n次幂)成计算机能够精确识别的整数,等计算完毕再降级(除以10的n次幂),这是大部分编程语言处理精度差异的通用方法。

console.log((0.1*10 + 0.2*10)/10); // 0.3

额外:http://blog.csdn.net/u012143360/article/details/53148591

通过将浮点数转换成整数进行计算,然后再将整数的小数点位调整,转回正确的浮点数结果。

console.log(6.8-0.9); // 5.8999999999999995console.log(Math.round((6.8-0.9)*10)); // 59Math.formatFloat = function (f, digit) {var m = Math.pow(10, digit); return Math.round(f * m, 10) / m;};console.log(Math.formatFloat(6.8-0.9,2)); // 5.912年的前辈总结:http://blog.51cto.com/xzllff/83124113年自定义函数:https://www.cnblogs.com/wangkongming/archive/2013/01/18/2866788.html17年css88加减乘除函数:http://www.css88.com/archives/7340


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有